/**
 * Copyright (c) 2024-2025 National Fundamental Software of China Co., Ltd.
 *
 * You should have find a copy of NFSChina License. If not, please contact us
 * by email <os_support@nfschina>
 *
**/

/*
    SPDX-FileCopyrightText: 2002 Joseph Wenninger <jowenn@kde.org>
    SPDX-FileCopyrightText: 2020 Méven Car <meven.car@kdemail.net>
    SPDX-FileCopyrightText: 2020 Tobias Fella <fella@posteo.de>

    SPDX-License-Identifier: GPL-2.0-or-later
*/

#include "componentchoosercalendarclient.h"
#include <KService>
#include <kapplicationtrader.h>

componentchoosercalendarclient::componentchoosercalendarclient(QObject *parent)
    : ComponentChooser(parent,
                       QStringLiteral("text/calendar"),
                       QStringLiteral("Calendar"),
                       QStringLiteral("thunderbird.desktop"),
                       i18n("Select default clendar"))
{
    //filterApplications();
}

void componentchoosercalendarclient::save()
{
    const QString storageId = m_applications[m_index].toMap()["storageId"].toString();

    const KService::Ptr Service = KService::serviceByStorageId(storageId);
    if (!Service) {
        return;
    }

    saveMimeTypeAssociation(QStringLiteral("text/calendar"), storageId);
}

//void componentchoosercalendarclient::filterApplications()
//{
//    m_applications.clear();

//    bool preferredServiceAdded = false;

//    // 查询系统中是否有默认的日历应用程序（thunderbird.desktop）
//    KService::Ptr preferredService = KApplicationTrader::preferredService(m_mimeType);

//    // 获取所有符合条件的服务
//    KApplicationTrader::query([&preferredServiceAdded, preferredService, this](const KService::Ptr &service) {
//        // 只添加支持 text/calendar 类型的应用
//        const QStringList mimeTypes = service->mimeTypes();
//        if (!mimeTypes.contains(QStringLiteral("text/calendar"))) {
//            return false;  // 如果不支持 text/calendar，跳过
//        }

//        // 排除 featherpad.desktop，避免它出现在日历应用中
//        if (service->storageId() == QStringLiteral("featherpad.desktop")) {
//            return false;
//        }

//        // 检查应用程序是否有效（执行命令不能为空）
//        if (service->exec().isEmpty()) {
//            return false;  // 如果应用程序的执行命令为空，跳过
//        }

//        // 将符合条件的应用程序添加到列表
//        QVariantMap application;
//        application[QStringLiteral("name")] = service->name();
//        application[QStringLiteral("icon")] = service->icon();
//        application[QStringLiteral("storageId")] = service->storageId();
//        m_applications += application;

//        // 如果这是首选应用，则标记
//        if (preferredService && preferredService->storageId() == service->storageId()) {
//            m_index = m_applications.length() - 1;
//            preferredServiceAdded = true;
//        }

//        return false;  // 继续检查下一个服务
//    });

//    // 如果没有默认的 thunderbird.desktop 应用，添加它作为“其他”选项
//    if (!preferredServiceAdded) {
//        QVariantMap application;
//        application["name"] = i18n("Other…");
//        application["icon"] = QStringLiteral("application-x-shellscript");
//        application["storageId"] = QString();
//        m_applications += application;
//    }

//    // 如果找到 thunderbird.desktop 并且没有添加过它，作为第一个选项
//    if (preferredService && !preferredServiceAdded) {
//        QVariantMap application;
//        application["name"] = preferredService->name();
//        application["icon"] = preferredService->icon();
//        application["storageId"] = preferredService->storageId();
//        m_applications.insert(0, application);  // 插入到第一个位置
//        m_index = 0;  // 设置为第一个选项
//    }

//    // 如果没有默认的 thunderbird.desktop，且列表为空，默认选择“其他”
//    if (m_index == -1 && m_applications.isEmpty()) {
//        m_index = 0;  // 选择“其他”
//    }

//    m_previousApplication = m_applications[m_index].toMap()["storageId"].toString();
//    Q_EMIT applicationsChanged();
//    Q_EMIT indexChanged();
//    Q_EMIT isDefaultsChanged();
//}
